package net.comm.common;

import net.comm.util.StringUtil;

/**
 * key和value的映射(3期使用)
 * 
 * @author 
 * @version 1.0
 * @date 2007-6-12
 * 
 * 用途(如有其他用途需进行补充):
 * 
 * 1.select标签中option的value和key的映射 2.查询列表数据中表中的值和显示文字的对应关系
 * 
 * 
 * 使用规范:
 * 
 * 1.首先到GlbFinal中查看是否已经定义了需要的映射数组,如果已经定义则直接使用或者引用,如果没有进行2步操作
 * 
 * 2.在该类中定义一个新的值映射数组,一纬的常量值必须首先查看GlbFinal中是否已经有定义，如果有定义则直接进行引用,
 * 如果没有定义,则必须先在GlbFinal中定义相关的常量，然后在该类中定义需要的值映射二维数组
 * 
 * 3.每个值映射的二维数组具体说明应该尽量清晰,便于其他开发人员理解
 * 
 * 具体例子可以查看"参数启用、停用"这个二维数组定义
 * 
 */
public class ValueMaping {

	/**
	 * 1：是 2：否
	 */
	public static final String[][] YESNO_FLAG = {
			{ GlbFinal.YES, GlbFinal.NO },
			{ Message.YES, Message.NO } };

	/**
	 * 1：未发送 2：已发送
	 */
	public static final String[][] SEND_STATUS = {
			{ GlbFinal.SENDN, GlbFinal.SENDY },
			{ Message.SENDN, Message.SENDY } };

	/**
	 * 1：页面未显示 2：页面已显示
	 */
	public static final String[][] PAGE_STATUS = {
			{ GlbFinal.PAGEDISN, GlbFinal.PAGEDISY },
			{ Message.PAGEDISN, Message.PAGEDISY } };

	/**
	 * 首页显示标志
	 */
	public static final String[][] HOMEDIS_FLG = {
			{ GlbFinal.HOMEDIS_YES, GlbFinal.HOMEDIS_NO },
			{ Message.HOMEDIS_YES, Message.HOMEDIS_NO } };	
	
	/**
	 * 消息状态
	 */
	public static final String[][] WEBMSG_FLAG = {
			{ GlbFinal.WEBMSG_UNREAD, GlbFinal.WEBMSG_READ },
			{ Message.WEBMSG_UNREAD, Message.WEBMSG_READ } };

	/**
	 *性别
	 */
	public static final String[][] SEX_TYPE = {
			{ GlbFinal.SEX_MAN, GlbFinal.SEX_WOMAN },
			{ Message.SEX_MAN, Message.SEX_WOMAN } };
	/**
	 *婚姻状况
	 */
	public static final String[][] MARRY_TYPE = {
			{ GlbFinal.MARRIED, GlbFinal.UNMARRIED },
			{ Message.MARRIED, Message.UNMARRIED } };
	/**
	 *好友/邻居状态
	 */
	public static final String[][] FR_STS = {
			{ GlbFinal.FRSTS_COMMON, GlbFinal.FRSTS_SHENDU },
			{ Message.FRSTS_COMMON, Message.FRSTS_SHENDU } };
	
	/**
	 *用户在线状态
	 */
	public static final String[][] USER_LINESTATUS = {
			{ GlbFinal.USER_ONLINE, GlbFinal.USER_OFFLINE },
			{ Message.USER_ONLINE, Message.USER_OFFLINE } };
	
	/**
	 *用户状态
	 */
	public static final String[][] USER_STS = {
			{ GlbFinal.USERSTS_NORMAL, GlbFinal.USERSTS_EMAIL, GlbFinal.USERSTS_CANCEL, GlbFinal.USERSTS_CHECKING },
			{ Message.USERSTS_NORMAL, Message.USERSTS_EMAIL , Message.USERSTS_CANCEL , Message.USERSTS_CHECKING } };

	/**
	 *站内信类型
	 */
	public static final String[][] MSG_TYPE = {
			{ 
				GlbFinal.MTYPE_SIXIN, GlbFinal.MTYPE_ZHAOHU, GlbFinal.MTYPE_QINGQIU, GlbFinal.MTYPE_GUANGZHU,
				GlbFinal.MTYPE_JIESHOU, 
				GlbFinal.MTYPE_LIUYAN,GlbFinal.MTYPE_PINGLUN, GlbFinal.MTYPE_HUIFU,GlbFinal.MTYPE_SHENQING,
				GlbFinal.MTYPE_YANZHENG,GlbFinal.MTYPE_YWYANZH,GlbFinal.MTYPE_WYYANZH
			},
			{
				Message.MTYPE_SIXIN, Message.MTYPE_ZHAOHU, Message.MTYPE_QINGQIU, Message.MTYPE_GUANGZHU,
				Message.MTYPE_JIESHOU, 
				Message.MTYPE_LIUYAN,Message.MTYPE_PINGLUN, Message.MTYPE_HUIFU,Message.MTYPE_SHENQING,				
				Message.MTYPE_YANZHENG,Message.MTYPE_YWYANZH,Message.MTYPE_WYYANZH
			} };	

	/**
	 *家庭状况
	 */
	public static final String[][] FAMLIY_TYPE = {
			{ 
				GlbFinal.FAMLIY_FUQI, GlbFinal.FAMLIY_XIEZI,	GlbFinal.FAMLIY_XIELAO, 
				GlbFinal.FAMLIY_SANDAI, GlbFinal.FAMLIY_DUJU, GlbFinal.FAMLIY_DANQIN,GlbFinal.FAMLIY_QITA		
			},
			{
				Message.FAMLIY_FUQI, Message.FAMLIY_XIEZI,	Message.FAMLIY_XIELAO, 
				Message.FAMLIY_SANDAI, Message.FAMLIY_DUJU	,Message.FAMLIY_DANQIN	,Message.FAMLIY_QITA
			} };	

	/**
	 *居住状况
	 */
	public static final String[][] LIVE_TYPE = {
			{ 
				GlbFinal.LIVE_ZIYOU, GlbFinal.LIVE_ZUFANG, GlbFinal.LIVE_DANWEIFANG,	GlbFinal.LIVE_JIEZHU, 
				GlbFinal.LIVE_QITA				
			},
			{
				Message.LIVE_ZIYOU, Message.LIVE_ZUFANG, Message.LIVE_DANWEIFANG,	Message.LIVE_JIEZHU, 
				Message.LIVE_QITA				
			} };	

	/**
	 *业委成员类型
	 */
	public static final String[][] YWMEMBER_TYPE = {
			{ 
				GlbFinal.YWPOST_FUZEREN, GlbFinal.YWPOST_COMMON, GlbFinal.YWPOST_LIANXIREN				
			},
			{
				Message.YWPOST_FUZEREN, Message.YWPOST_COMMON, Message.YWPOST_LIANXIREN				
			} };	
	/**
	 *物业成员类型
	 */
	public static final String[][] WYMEMBER_TYPE = {
			{ 
				GlbFinal.WYPOST_FUZEREN, GlbFinal.WYPOST_DUIZHANG, GlbFinal.WYPOST_COMMON			
			},
			{
				Message.WYPOST_FUZEREN, Message.WYPOST_DUIZHANG, Message.WYPOST_COMMON
				
			} };	
	/**
	 *会员/帖子/交友活动  状态
	 */
	public static final String[][] STS_FLG = {
			{ GlbFinal.STS_NORMAL, GlbFinal.STS_CLOSE, GlbFinal.STS_CHECKING },
			{ Message.STS_NORMAL, Message.STS_CLOSE, Message.STS_CHECKING } };
	
	/**
	 *机构类型
	 */
	public static final String[][] JIGOU_TYPE = {
			{ GlbFinal.JIGOU_YEWEI, GlbFinal.JIGOU_WUYE },
			{ Message.JIGOU_YEWEI, Message.JIGOU_WUYE } };
		
	/**
	 *有效证件类型
	 */
	public static final String[][] CERT_TYPE = {
			{ GlbFinal.CERT_IDCARD, GlbFinal.CERT_JGZ, GlbFinal.CERT_PASSPORT },
			{ Message.CERT_IDCARD, Message.CERT_JGZ, Message.CERT_PASSPORT } };

	/**
	 *用户类型
	 */
	public static final String[][] USER_TYPE = {
			{ GlbFinal.USER_COMMON,GlbFinal.USER_KEFU,
				GlbFinal.USER_ADMIN },
			{ Message.USER_COMMON, Message.USER_KEFU,
					Message.USER_ADMIN },
	};
	
	/**
	 *群组成员类型
	 */
	public static final String[][] GMEMBER_TYPE = {
		{ GlbFinal.GROUPMEMBER_CREATOR, GlbFinal.GROUPMEMBER_MANAGER, GlbFinal.GROUPMEMBER_COMMON },
		{ Message.GROUPMEMBER_CREATOR, Message.GROUPMEMBER_MANAGER, Message.GROUPMEMBER_COMMON } };
	
	/**
	 *公告通知类型
	 */
	public static final String[][] NOTADV_TYPE = {
			{ GlbFinal.NTYPE_GONGGAO, GlbFinal.NTYPE_TONGZHI, GlbFinal.NTYPE_TOUSU, GlbFinal.NTYPE_JIANYI,
				GlbFinal.NTYPE_LIUYAN,	GlbFinal.NTYPE_WENTI,	GlbFinal.NTYPE_SHENSU },
			{ Message.NTYPE_GONGGAO, Message.NTYPE_TONGZHI, Message.NTYPE_TOUSU, Message.NTYPE_JIANYI,
					Message.NTYPE_LIUYAN, Message.NTYPE_WENTI, Message.NTYPE_SHENSU },
	};
	
	/**
	 *公告通知所属板块
	 */
	public static final String[][] NOTADV_SORT = {
			{ GlbFinal.NSORT_YEWEI, GlbFinal.NSORT_WUYE, GlbFinal.NSORT_BULUO, GlbFinal.NSORT_KEFU,
				GlbFinal.NSORT_GERENZHUYE, GlbFinal.NSORT_SHEQU, GlbFinal.NSORT_PIC },
			{ Message.NSORT_YEWEI, Message.NSORT_WUYE, Message.NSORT_BULUO, Message.NSORT_KEFU,
					Message.NSORT_GERENZHUYE, Message.NSORT_SHEQU, Message.NSORT_PIC },
	};

	
    //是否首页显示
    public static final String HEAD_DISPLAY_FLAG[][] = {
        {
            GlbFinal.HEAD_DISPLAY, GlbFinal.HEAD_NODISPLAY
        }, {
            Message.HEAD_DISPLAY, Message.HEAD_NODISPLAY
        }
    };
	/**
	 *审核标志
	 */
	public static final String[][] CHK_FLAG = {
			{ GlbFinal.CHKFLAG_PASS, GlbFinal.CHKFLAG_NO },
			{  Message.CHKFLAG_PASS, Message.CHKFLAG_NO  } };	
 
    //资讯检索类型
    public static final String SEARCH_TYPE[][] = {
        {
            GlbFinal.SEARCH_TITLE, GlbFinal.SEARCH_CONT
        }, {
            Message.SEARCH_TITLE, Message.SEARCH_CONT
        }
    };
 
    //开放类型
    public static final String USERSET_TYPE[][] = {
        {
           GlbFinal.USERSET_MEMBER, GlbFinal.USERSET_LINJU , GlbFinal.USERSET_FRIEND, GlbFinal.USERSET_BAOMI 
        }, {
            Message.USERSET_MEMBER, Message.USERSET_LINJU , Message.USERSET_FRIEND , Message.USERSET_BAOMI
        }
    };    
    
    //谁能给我邮件等其他类型
    public static final String PROTECT_TYPE[][] = {
        {
            GlbFinal.USERSET_MEMBER, GlbFinal.USERSET_LINJU , GlbFinal.USERSET_FRIEND 
        }, {
            Message.USERSET_MEMBER, Message.USERSET_LINJU , Message.USERSET_FRIEND
        }
    };    
    
	/**
	 *星座
	 */
	public static final String[][] STAR_TYPE = {
			{
			    GlbFinal.STAR_SHUIPING,    //"1";	//水瓶座 
			    GlbFinal.STAR_SHUANGYU,    //"2";	//双鱼座   
			    GlbFinal.STAR_BAIYANG,    //"3";	//白羊座  
			    GlbFinal.STAR_JINNIU,    //"4";	//金牛座   
			    GlbFinal.STAR_SHUANGZI,    //"5";	//双子座  
			    GlbFinal.STAR_JUXIE,    //"6";	//巨蟹座
			    GlbFinal.STAR_SHIZI,    //"7";	//狮子座
			    GlbFinal.STAR_CHUNV,    //"8";	//处女座
			    GlbFinal.STAR_TIANCHENG,    //"9";	//天秤座    
			    GlbFinal.STAR_TIANXIE,    //"A";	//天蝎座
			    GlbFinal.STAR_SHESHOU,    //"B";	//射手座
			    GlbFinal.STAR_MOJIE,    //"C";	//摩羯座			
			},
			{
			    Message.STAR_SHUIPING,   //"水瓶座"; 
			    Message.STAR_SHUANGYU,   //"双鱼座";   
			    Message.STAR_BAIYANG,   //"白羊座";  
			    Message.STAR_JINNIU,   //"金牛座";   
			    Message.STAR_SHUANGZI,   //"双子座";  
			    Message.STAR_JUXIE,   //"巨蟹座";
			    Message.STAR_SHIZI,   //"狮子座";
			    Message.STAR_CHUNV,   //"处女座";
			    Message.STAR_TIANCHENG,   //"天秤座";    
			    Message.STAR_TIANXIE,   //"天蝎座";
			    Message.STAR_SHESHOU,   //"射手座";
			    Message.STAR_MOJIE,   //"摩羯座";   				
			},
	};
	/**
	 *属相
	 */
	public static final String[][] SHXIAO_TYPE = {
			{
			    GlbFinal.SHXIAO_SHU,   //"鼠";    
			    GlbFinal.SHXIAO_NIU,   //"牛";
			    GlbFinal.SHXIAO_HU,   //"虎";
			    GlbFinal.SHXIAO_TU,   //"兔";
			    GlbFinal.SHXIAO_LONG,   //"龙";  
			    GlbFinal.SHXIAO_SHE,   //"蛇"; 
			    GlbFinal.SHXIAO_MA,   //"马";
			    GlbFinal.SHXIAO_YANG,   //"羊";  
			    GlbFinal.SHXIAO_HOU,   //"猴"; 
			    GlbFinal.SHXIAO_JI,   //"鸡";
			    GlbFinal.SHXIAO_GOU,   //"狗"; 
			    GlbFinal.SHXIAO_ZHU,   //"猪"; 				
			},
			{
			    Message.SHXIAO_SHU,   //"鼠";    
			    Message.SHXIAO_NIU,   //"牛";
			    Message.SHXIAO_HU,   //"虎";
			    Message.SHXIAO_TU,   //"兔";
			    Message.SHXIAO_LONG,   //"龙";  
			    Message.SHXIAO_SHE,   //"蛇"; 
			    Message.SHXIAO_MA,   //"马";
			    Message.SHXIAO_YANG,   //"羊";  
			    Message.SHXIAO_HOU,   //"猴"; 
			    Message.SHXIAO_JI,   //"鸡";
			    Message.SHXIAO_GOU,   //"狗"; 
			    Message.SHXIAO_ZHU,   //"猪"; 				
			},
	};    
    
    
	
	  /********************************************************
	  功    能：根据二维数组GlbFinal的值，取对应Message的字符串值
	  入口参数：String[][], 二维数组名， String value- GlbFinal的值
	  出口参数：对应Message的字符串值
	  返    回：对应Message的字符串值
	  编 写 人：
	  编写日期：20091219
	  修改备注：
	  ********************************************************/
	  public static String GetMsg(String[][] array, String strvalue)
	  {
	     String str = "";
	     int Len = 0 ;
	     Len = array[0].length;
	     if ((Len == 0))
	    	 str = strvalue;
	     else
	     {
	    	 for(int i=0; i < array[0].length; i++){
	    		 if(array[0][i].equals(strvalue)){
	    			 str = array[1][i];
	    			 break;
	    		 }
	    	 }
	     }
	     return str;
	  }  
	  /********************************************************
	  功    能：根据二维数组GlbFinal的值，取对应Message的字符串值
	  入口参数：String[][], 二维数组名， String value- GlbFinal的值
	  出口参数：对应Message的字符串值
	  返    回：对应Message的字符串值
	  编 写 人：
	  编写日期：20091219
	  修改备注：
	  ********************************************************/
	  public static String GetMsg(String[][] array, int value)
	  {
	     String str = "";
	     String strvalue = StringUtil.rfillCharater(String.valueOf(value), '0', 2);
	     int Len = 0 ;
	     Len = array[0].length;
	     if ((Len == 0))
	    	 str = strvalue;
	     else
	     {
	    	 for(int i=0; i < array[0].length; i++){
	    		 if(array[0][i].equals(strvalue)){
	    			 str = array[1][i];
	    			 break;
	    		 }
	    	 }
	     }
	     return str;
	  }  	  
	  /********************************************************
	  功    能：根据多选值 取得对应的每个值的字符串，组合
	  入口参数：String[][], 二维数组名， int value（2的幂）
	  出口参数：对应Message的字符串值
	  返    回：对应Message的字符串值
	  编 写 人：
	  编写日期：20091219
	  修改备注：
	  ********************************************************/
	  public static String GetMsgArray(String[][] array, int value)
	  {
		  int i = 1;
		  StringBuffer sb = new StringBuffer("");
		  int va1;
		  int va2;
		  while(value > 0 && i < 100){
				va1 = (int)Math.pow(2, i);
				va2 = (int)Math.pow(2, i+1);
			  if(((value == va1)||(value > va1)&&(value < va2))&&(i < array[0].length + 1)){
				sb.append(array[1][i-1]);
				sb.append(" ");
				value = value - va1;
				i = 1;
			  }else{
				 i++;
				 
			  }
		  }
	     return sb.toString();
	  } 
	  /********************************************************
	  功    能：根据多选值 取得对应的每个值的字符串，组合
	  入口参数：String[][], 二维数组名， int value（2的幂）
	  出口参数：对应Message的字符串值
	  返    回：对应Message的字符串值
	  编 写 人：
	  编写日期：20091219
	  修改备注：
	  ********************************************************/
	  public static String GetMsgArray(String[][] array, long value)
	  {
		  int i = 1;
		  StringBuffer sb = new StringBuffer("");
		  long va1;
		  long va2;
		  while(value > 0 && i < 100){
				va1 = (long)Math.pow(2, i);
				va2 = (long)Math.pow(2, i+1);
			  if(((value == va1)||(value > va1)&&(value < va2))&&(i < array[0].length + 1)){
				sb.append(array[1][i-1]);
				sb.append(" ");
				value = value - va1;
				i = 1;
			  }else{
				 i++;
				 
			  }
		  }
	     return sb.toString();
	  }	  
	  /********************************************************
	  功    能：根据多选值 判断单个值在数组中是否存在
	  入口参数：String[][], 二维数组名， int value（2的幂）
	  出口参数：对应Message的字符串值
	  返    回：对应Message的字符串值
	  编 写 人：
	  编写日期：20091219
	  修改备注：
	  ********************************************************/
	  public static boolean IsExist(String[][] array, int fldvalue, int curi)
	  {
		  int i = 1;
		  int va1;
		  int va2;
		  boolean ret = false;
		  while(fldvalue > 0 && i < 100){
				va1 = (int)Math.pow(2, i);
				va2 = (int)Math.pow(2, i+1);
			  if(((fldvalue == va1)||(fldvalue > va1)&&(fldvalue < va2))&&(i < array[0].length+1)) {
				if(curi == i){
					ret = true;
					break;
				}
				fldvalue = fldvalue - va1;
				i = 1;
			  }else{
				 i++;
			  }
		  }
	     return ret;
	  } 
	  /********************************************************
	  功    能：根据多选值 判断单个值在数组中是否存在
	  入口参数：String[][], 二维数组名， int value（2的幂）
	  出口参数：对应Message的字符串值
	  返    回：对应Message的字符串值
	  编 写 人：
	  编写日期：20091219
	  修改备注：
	  ********************************************************/
	  public static boolean IsExist(String[][] array, long fldvalue, int curi)
	  {
		  int i = 1;
		  long va1;
		  long va2;
		  boolean ret = false;
		  while(fldvalue > 0 && i < 100){
				va1 = (long)Math.pow(2, i);
				va2 = (long)Math.pow(2, i+1);
			  if(((fldvalue == va1)||(fldvalue > va1)&&(fldvalue < va2))&&(i < array[0].length+1)) {
				if(curi == i){
					ret = true;
					break;
				}
				fldvalue = fldvalue - va1;
				i = 1;
			  }else{
				 i++;
			  }
		  }
	     return ret;
	  } 	
	
}
